Skip to main content

Zu sandbox backends and event sinks: local-docker, sqlite

Project description

zu-backends

Infrastructure adapters: the SandboxBackend port (provision and run a tier's environment) and the EventSink port (persist and query the event log). These are the durable/isolation seams the core defers behind a port.

Registered plugins

Sandbox backends (zu.backends)

Name Class Notes
local-docker LocalDockerBackend Runs a tier's container via the local Docker daemon. Network is disabled by default and enabled only for the render tier; scoped egress (allowlist / DNS-pinned) is the deferred egress-policy work. Needs the [docker] extra.

Event sinks (zu.sinks)

Name Class Notes
sqlite SqliteSink The durable canonical store: WAL, synchronous=FULL, busy_timeout, single writer, keyset streaming, idempotent append.
jsonl JsonlSink One JSON object per line — a greppable secondary/trace sink that log shippers tail.

The payload codec seam (zu_core.codec) lets a sink encrypt payloads at rest; an AES-256-GCM codec ships behind the optional [encryption] extra (zu_backends.encryption). Every sink links each event into its trace's tamper-evidence hash chain (zu_core.chain, ZU-AUDIT-1).

Upstream-conformance reference plugins

Dependency-light reference implementations of the conformance ports (spec: zu-upstream-conformance.md, trusted base: docs/TCB.md):

Kind Name Class Notes
zu.channels credential-broker broker:CredentialBroker A harness-owned Channel (ZU-NET-2): secret read inside the adapter, narrow verbs (mint/introspect) return a derived token, never the secret.
zu.backends oop-launcher oop_launcher:OutOfProcessLauncher Runs a plugin (e.g. the broker) in a separate process/uid over the zu_core.rpc socket contract (ZU-NET-3 / ZU-CORE-3): a harness compromise yields the socket, not the secret.
zu.workload_identity static identity:StaticIdentity Attestable identity (ZU-NET-4/5): HMAC-signed principal + optional attestation measurement; stdlib-only. mTLS/SPIFFE are follow-ons behind the same port.
zu.egress_enforcement docker-internal-net, nftables egress_enforce:* Pluggable default-deny + DNS gating port (ZU-NET-1). The SandboxLauncher routes through it: pin the proxy by IP + gate the embedded resolver so DNS isn't a covert channel. ScriptedEnforcement proves swappability offline; nftables is the Linux-native mechanism; live behavior is validated under --run-docker.

broker.py's narrow verbs are the worked example for ZU-EXT-3 (many narrow typed ports, not one wide "send this request" proxy).

Extend

Implement the SandboxBackend or EventSink shape, register under zu.backends / zu.sinks, and add a deterministic test (inject a fake Docker client / use a temp DB path — no real daemon needed offline).

Tests

uv run pytest packages/zu-backends — offline.

Project details


Download files

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

Source Distribution

zu_backends-0.2.2.tar.gz (59.1 kB view details)

Uploaded Source

Built Distribution

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

zu_backends-0.2.2-py3-none-any.whl (49.8 kB view details)

Uploaded Python 3

File details

Details for the file zu_backends-0.2.2.tar.gz.

File metadata

  • Download URL: zu_backends-0.2.2.tar.gz
  • Upload date:
  • Size: 59.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for zu_backends-0.2.2.tar.gz
Algorithm Hash digest
SHA256 af65fbe6f73f0edfdf7952441a98a17f11c236d5367824f160af208883722994
MD5 93b3f718fee7a4b97f4ade52d70e7c92
BLAKE2b-256 b2e0252311ffdc52755df270e647df61fbad44b4babae1aa75a79ade1b19547b

See more details on using hashes here.

File details

Details for the file zu_backends-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: zu_backends-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 49.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for zu_backends-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 81e0cefedc0d8c4f3eaad8f116cec0f760ea1ba75bad8a28664cdb8679c164f1
MD5 e590be661aa6d68fd7e00ab106a38cdd
BLAKE2b-256 59d5e59148c8c5edbda991043aeb429fc4acdd460b14dbb091120660ab22cad7

See more details on using hashes here.

Supported by

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