Repository navigation
Hive Commons (CNCF Sandbox) integrated OpenShell as a coding-agent sandbox runtime — measurements, friction, two asks #5504
clubanderson
started this conversation in
Design Discussion
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi OpenShell folks — Andy from Hive Commons (CNCF Sandbox, https://github.com/hivecommons/hive). We've shipped OpenShell as an opt-in sandbox runtime for the coding agents hive runs on Kubernetes, and just finished measuring it on a Linode LKE cluster (Debian 13, kernel 6.12, Calico). Sharing what we found in case it's useful, plus a couple of questions.
What we built:
sandbox.runtime: openshellnext to ourjobandpodmanruntimes — ADR: https://github.com/hivecommons/hive/blob/v5/src/docs/adr/0026-sandbox-runtime-selection.md · operator guide: https://github.com/hivecommons/hive/blob/v5/src/deploy/openshell.md · PRs hivecommons/hive#17638, #17646; prototype results hivecommons/hive#17643. Hive derives the egress policy from its own allowlist (github.com, api.github.com) per binary, mounts the agent workspace from a shared RWX claim via callerdriver_config, and deletes the sandbox when the kick ends.Numbers (gateway/supervisor/sandbox 0.1.8, same node, median):
Egress enforcement was exactly right: allowed hosts 200/OK, everything else refused in ~2 ms; non-root, CapEff 0, seccomp on. Nice work — it "just enforced".
Friction we hit (all worked around, documented on our side):
workspace-*block PVC.server.workspaceStorageClasson NFS fixed it.MAX_ROUTABLE_NAME_LEN = 19and the reservedworkspacevolume name are only discoverable from the gateway's error;allowed_pod_labels/allowed_pod_annotationsdefault-deny likewise.runAsUser 10001over the image's USER (fine, but surprised us on a shared claim).alpineimages fail every time withspawn sandbox entrypoint process '/bin/sh': Permission denied (os error 13); glibc images are fine.ReportSandboxConfigurationand never reconnected, so the sandbox never became Ready.landlockmust be in the active/sys/kernel/security/lsmlist (OL9 UEK8 6.12 had it compiled but not active).Asks: (1) Is there a way to skip the per-sandbox workspace PVC when the caller mounts its own volume, or make it an emptyDir? (2) For machine clients like hive's controller, is a static/service-account credential planned, or is OIDC JWT / mTLS the intended path? Also happy to open an issue for the alpine
/bin/shEACCES if you'd like a repro.We'll publish per-runtime results on https://hivecommons.dev/benchmarks/ and would be glad to collaborate on the benchmark harness or docs. Thanks!
All reactions