PyIsolate is a prototype. This document tracks what already exists, what is actively being built, and where the project is headed. The security boundary is backend-conditional — see docs/threat-model.md for the normative statement.
- Backends —
backend="thread"(execution cell; a dedicated thread of the supervisor process, previously spelledsubinterpreter),backend="subinterpreter"(real CPython sub-interpreter cells on 3.14+, with a pre-warmed pool; an execution cell, not a boundary),backend="fabric"(those cells hosted in worker processes, with tenant-aware placement, worker memory caps, and kill-and-replace recovery — the multi-tenant mode), andbackend="process"(the boundary mode): a real separate-process boundary withno_new_privs+ a seccomp deny-list, Landlock filesystem rules, Landlock TCP-egress rules (ABI ≥ 4), a coarse per-cgroup eBPF/LSM deny-mask, andrlimitcaps, recorded in a per-sandbox confinement report. - Broker transport — X25519 (optional Kyber-768 hybrid) → ChaCha20-Poly1305
authenticated channel with per-direction replay counters; capability-gated
requestcell op in both backends. - Policy — YAML policy model + compiler, token-gated hot-reload, and remote refresh over bounded HTTP(S).
- No-GIL axis — free-threaded build / GIL / native-extension classification with a release gate and CI coverage.
- Observability — Prometheus metrics, structured logging,
pyisolate doctorprovenance, and a 10-point--gradeconformance score. - Packaging — PyPI metadata + a Trusted-Publishing release workflow (tooling in place; no release cut yet).
- microVM scaffolding — VMM/KVM capability detection, fail-closed admission, a Firecracker machine-config builder, and a VMM launcher (process lifecycle).
- Also shipped — encrypted checkpointing, checkpoint migration to a peer, NUMA-aware scheduling, a CLI, a policy editor, and pre-commit + CI.
- Broker request execution for the fabric — a fabric cell's
requestop surfaces to the supervisor like the other backends', and still nothing executes it. The fabric is where mediation matters most, because a worker holds many tenants' cells: the handler has to be capability-scoped per cell, not per worker. - Kernel confinement of fabric workers — a worker is currently an ordinary
process with the supervisor's privileges. With
tenant_isolation=Truea worker serves one tenant, so its policy is unambiguous and the process backend's seccomp/Landlock/cgroup layers could be applied to it at spawn. That would make the fabric a defence-in-depth boundary rather than only a fault boundary. - Fabric admission from policy — routing is explicit today
(
backend="fabric",tenant=...). Deriving placement and backend choice from the policy's import list would let a tenant that needs numpy land onprocessautomatically instead of failing at import time. - Broker request execution — the
requestop currently surfaces aBrokerRequestto the host but nothing executes it or returns a result. Add a request/response round-trip and a pluggable, capability-scoped handler so the broker actually mediates privileged operations. - Process-backend quota enforcement — attach process-backed sandboxes to
cgroups and cover them with the
ResourceWatchdog(today they getrlimitonly and are not watched), so the boundary mode gets the CPU/memory quota enforcement the threat model credits it with. - microVM guest agent + vsock transport — the launcher can boot a VMM; the
remaining work is the in-guest agent and carrying the cell protocol over
vsock, which is what makes
backend="microvm"a usable, working boundary. - Cut
v0.0.1to PyPI — using the existing release workflow, once a Trusted Publisher andpypienvironment are configured.
- Richer eBPF/LSM enforcement — move beyond the coarse per-cgroup deny-mask toward per-path / per-destination allow-lists in the LSM layer.
- Landlock network
bindrestriction — complement the existing egress (connect) rules. - Input validation & constant-time error paths on broker messages.
- Hardware-assisted checks — evaluate Intel CET, ARM pointer authentication, and MTE where supported.
- Supply chain — reproducible builds, artifact signing, and eBPF-bytecode pinning (currently roadmap, not guaranteed).
- WASM build target to run a sandbox inside browsers.
- gRPC control-plane plugin for managing remote sandboxes.
- Language bindings for Rust and Go.
- Kubernetes operator — currently minimal (
pyisolate[operator]); grow it into a real reconciler with a documented CRD.
- Distributed supervisor scheduling sandboxes across hosts.
- Live migration of running sandboxes between hosts.
- Policy plugin ecosystem for community-contributed guards and metrics.
- Comprehensive dashboards with Grafana and alerting hooks.