Skip to content

refactor(sandbox): sandboxes are managed as separate community images - #267

Merged
drew merged 3 commits into
mainfrom
refactor/supervisor-hostpath-sideload/dn
Mar 13, 2026
Merged

refactor(sandbox): sandboxes are managed as separate community images#267
drew merged 3 commits into
mainfrom
refactor/supervisor-hostpath-sideload/dn

Conversation

@drew

@drew drew commented Mar 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Eliminate the standalone sandbox image from this repo. Sandbox Dockerfiles, the default security policy, and bundled skills are moving to the community repository (NVIDIA/OpenShell-Community). Sandbox images are now pulled from ghcr.io/nvidia/openshell-community/sandboxes/ at runtime.
  • Replace the emptyDir + init container pattern with a hostPath volume. The navigator-sandbox supervisor binary is now built into the k3s cluster image (Dockerfile.cluster gains a supervisor-builder stage) and exposed to sandbox pods via a read-only hostPath mount at /opt/openshell/bin. This is applied unconditionally to all pods — no more needs_supervisor_bootstrap() conditional.
  • Faster pod startup and simpler deploy. No init container image pull, no emptyDir copy step. Fast-deploy uses docker cp to update the supervisor binary on the running k3s container; new sandbox pods pick it up immediately via the hostPath mount.

Changes

Area What changed
Dockerfile.cluster New supervisor-builder stage cross-compiles navigator-sandbox; binary placed at /opt/openshell/bin/navigator-sandbox
sandbox/mod.rs emptyDir + init container replaced with hostPath volume; apply_supervisor_bootstrap renamed to apply_supervisor_sideload; always applied to all pods
navigator-cli/src/run.rs Removed init container image-pull filtering from provisioning display
Deploy scripts Dropped sandbox build/push/tag logic; added docker cp workflow for supervisor binary updates; new cluster:deploy:supervisor mise task
Helm values Default sandboxImageghcr.io/nvidia/openshell-community/sandboxes/base:latest
Deleted files Dockerfile.base, Dockerfile.nvidia, dev-sandbox-policy.yaml, skills/github/SKILL.md (moved to community repo)
Docs & skills Architecture docs and agent skills updated for new delivery model

Test Plan

  • Unit tests updated in sandbox/mod.rs — verifies hostPath volume, read-only mount, runAsUser: 0, and absence of init containers
  • Manual: mise run cluster with default and custom sandbox images

@drew drew self-assigned this Mar 12, 2026
…deload

Move the sandbox image (Dockerfiles, default policy, skills) to the
community repository and deliver the navigator-sandbox supervisor binary
via a read-only hostPath volume from the k3s node filesystem instead of
an emptyDir + init container pattern.

Key changes:
- Add supervisor-builder stage to Dockerfile.cluster that cross-compiles
  navigator-sandbox and places it at /opt/openshell/bin/
- Replace emptyDir + copy-supervisor init container with hostPath volume
  mount, applied unconditionally to all sandbox pods
- Remove standalone sandbox Dockerfile, NVIDIA variant, default policy,
  and bundled skills (moved to NVIDIA/OpenShell-Community)
- Update default sandboxImage to ghcr.io/nvidia/openshell-community/sandboxes/base:latest
- Update deploy scripts to drop sandbox build/push/tag logic and add
  docker cp workflow for fast supervisor binary updates
- Remove init container filtering from CLI provisioning display
- Update architecture docs and agent skills for new delivery model
@drew
drew force-pushed the refactor/supervisor-hostpath-sideload/dn branch from 7bee94c to 6f4424a Compare March 13, 2026 00:59
@github-actions

github-actions Bot commented Mar 13, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-03-13 05:07 UTC

- Remove redundant mkdir for /opt/openshell/bin in Dockerfile.cluster
- Remove dead RUST_TARGET variable in cluster-deploy-fast.sh
- Remove unnecessary bare block in run.rs Pulling handler
- Use DirectoryOrCreate for hostPath volume type for upgrade resilience
@drew drew changed the title refactor(sandbox): replace init container with hostPath supervisor sideload refactor(sandbox): sandboxes are managed as separate community images Mar 13, 2026
@drew
drew merged commit aa4268d into main Mar 13, 2026
11 checks passed
@drew
drew deleted the refactor/supervisor-hostpath-sideload/dn branch March 13, 2026 05:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant