Drew Newberry
c1f2e7189f
feat(isolation): implement the RFC 0012 sandbox architecture ( #2942 )
...
* feat(isolation): add RFC 0012 backend contract
Signed-off-by: Drew Newberry <385+drew@users.noreply.github.com >
* refactor(isolation): name the interface crate explicitly
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): expose trusted host gateway
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* docs(agents): inventory the MXC driver
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): add mediated DNS transport
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): tighten interface error and digest contracts
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* docs(isolation): remove unrelated driver inventory
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): define capability-free launch contract
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): seal confirmed boundary state
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): validate confirmation for external backend implementations
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): clarify mediated DNS identity
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(isolation): generalize loopback connector
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(isolation): unify typed network mediation
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): bind launches to sandbox sessions
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(mxc): initialize extended sandbox status
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): add boundary protocol and Linux primitives
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): harden signals and separate process status from transport
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): validate remote confirmation through public contract
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): validate wire state and propagate snapshot failures
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* test(isolation): import owned agent specification explicitly
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* docs(isolation): describe mediated DNS channel
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): bound mediation attach without nested retries
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(isolation): generalize loopback protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): add transport-neutral session authentication
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(isolation): separate sandbox backend protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): harden runtime boundary controls
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): add terminal boundary operation
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): split supervisor and sandbox runtimes
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): harden boundary isolation and lifecycle ownership
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): reject private root redirects and adopt typed errors
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): preserve accept thread ownership on musl
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* test(sandbox): isolate credential probes from filtered threads
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): return retained exec exit status to independent waiters
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): bound network mediation and preserve socket authorization
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): bound control admission and retire stale mediation
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* ci(e2e): select migrated drivers per stack layer
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(sandbox): implement loopback connector
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(isolation): authenticate the Sandbox Protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(supervisor): rotate launch-scoped authentication
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(sandbox): consume dedicated backend crate
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* test(sandbox): align topology session fixture
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): align projected bootstrap bundle
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(auth): validate refreshed credentials before rotation
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): fail closed across supervisor disconnects
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): repair rebased sandbox CI
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* build(runtime): publish separate sandbox and supervisor images
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(config): configure the sandbox runtime image
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(ci): validate sandbox binary linkage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(isolation): use backend and runtime terminology
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(sandbox): use a scratch runtime image
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(ci): refresh schema and dependency policy
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(sandbox): bind reconnects to supervisor process
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* docs: align runtime split operational guidance
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* chore(security): document Kubernetes runtime RBAC
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): enforce runtime lifecycle invariants
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(compute): identify sandbox start generations
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(server): restore sandbox launch sessions
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): support authenticated runtime replacement
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(auth): bind sandbox session successors
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(auth): retry pending sandbox successors
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(vm): run the supervisor outside the guest workload
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(vm): use sandbox backend protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): repair rebase integration
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): use unified build toolchain
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(vm): use sandbox runtime terminology
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(vm): own guest network bootstrap
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): expose guest init version
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): select native supervisor artifacts
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): guard guest init Linux symbols
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): scope Linux test imports
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): avoid guest interface casts
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): reconcile admitted sandbox identity
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): share resolved sandbox identity
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): surface host supervisor failures
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): include guest logs on supervisor exit
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): rotate and clean runtime generations
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): make sandbox starts generation-aware
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): rotate restored sandbox sessions
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(vm): keep shared paths in the base layer
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): bind sandbox session lineage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(docker): isolate workloads behind the host supervisor
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(docker): rotate launch-scoped authentication
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(docker): use sandbox backend protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(docker): use host networking for supervisor
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): preserve host gateway alias resolution
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(docker): use separate sandbox and supervisor images
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): restore startup validation after rebase
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(docker): name the sandbox runtime directly
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): narrow supervisor CA runtime storage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): close companion isolation gaps
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* test(docker): align mediated network expectations
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* test(docker): exercise mediated network paths
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): attach supervisor to managed network
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): defer supervisor recovery until gateway is ready
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): make sandbox starts generation-aware
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): rotate restored sandbox sessions
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): preserve workloads during session rotation
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(docker): remove unrelated configuration RFC changes
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): bind sandbox session lineage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(kubernetes): add proxy-pod isolation topology
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(kubernetes): use sandbox backend protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): use stable sandbox service authority
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(kubernetes): split sandbox and supervisor images
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): adapt proxy pods to current runtime APIs
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(kubernetes): describe the single runtime placement
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(kubernetes): simplify sandbox orchestration
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): validate deployment prerequisites
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): update Trivy Helm profile inventory
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* test(kubernetes): update Trivy scan inventory count
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): reuse preloaded runtime images in e2e
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): type and clean runtime resources
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): make sandbox restarts recoverable
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): rotate restored sandbox sessions
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): preserve supervisor egress
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): bind sandbox session lineage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(podman): adopt isolated sandbox and supervisor containers
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): stage bootstrap archives at named volume destinations
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(podman): rotate launch-scoped authentication
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(podman): use sandbox backend protocol
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(podman): use host networking for supervisor
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(podman): split sandbox and supervisor images
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): repair rebase integration
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(podman): name the sandbox runtime directly
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): provision supervisor CA runtime storage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): address isolation review findings
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): inspect Debian supervisor provenance
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): use libpod-compatible tmpfs options
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): bind verified sandbox runtime binary
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): provide external driver data directory
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): start sandbox before joining user namespace
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): separate supervisor user namespace
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): make sandbox starts generation-aware
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): rotate restored sandbox sessions
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): bind sandbox session lineage
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* perf(isolation): add TCP and DNS benchmark harnesses
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(perf): align benchmark timing and supported protocols
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(perf): report TCP benchmark metrics accurately
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(perf): cancel failed worker startup
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(docker): build matching local supervisor image
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(podman): make local sandbox smoke test runnable
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): wire local sandbox runtime image
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(kubernetes): narrow sandbox service RBAC
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(ci): validate split runtime artifacts
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): harden runtime session handling
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* feat(supervisor): add standalone network proxy role
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* docs(rfc): remove implementation companion notes
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* refactor(vm): standardize runtime release name
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(vm): pin renamed runtime artifacts
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(auth): persist sandbox runtime identity
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(runtime): restore branch validation
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(isolation): reconcile main after rebase
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(network): close unframed HTTP 1.0 responses
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* chore(isolation): preserve upstream OCSF updates
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(security): close credential and TLS replay paths
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
* fix(auth): make sandbox refresh retries idempotent
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
---------
Signed-off-by: Drew Newberry <385+drew@users.noreply.github.com >
Signed-off-by: Drew Newberry <anewberry@nvidia.com >
2026-09-16 00:49:14 +00:00
Drew Newberry
6dc97171ed
feat(sandbox): add image build/push and fix cluster deploy ( !34 )
...
Closes #44
## Summary
- Add `nav sandbox image push --dockerfile <path>` command to build and push custom container images into the cluster
- Fix sandbox Docker build failure caused by OpenClaw installer TTY access
- Fix sandbox proxy crash when network namespace is unavailable (fall back to loopback)
- Add e2e test for the full custom image build and sandbox creation flow
- Rename and rewrite BYOC architecture doc to reflect current state
## Changes
### `navigator-bootstrap`
- New `build` module (`src/build.rs`) with `build_and_push_image()` public API
- Builds via bollard `Docker::build_image()`, streams output to caller
- `.dockerignore` support with glob matching, 8 unit tests
### `navigator-cli`
- Added `SandboxImageCommands::Push` subcommand with `--dockerfile`, `--tag`, `--context`, `--build-arg` flags
- Added `test:e2e:custom-image` mise task
### `navigator-sandbox`
- Proxy now falls back to `127.0.0.1:3128` when no network namespace or explicit bind address is available, instead of erroring out
### Docker / Infra
- Sandbox Dockerfile: replaced OpenClaw native installer (`curl | bash`) with `npm install -g openclaw` to avoid `/dev/tty` failures in Docker build
### Documentation
- Renamed `architecture/sandbox-byoc.md` to `sandbox-custom-containers.md`
- Rewrote doc to describe current behavior (CLI usage, push pipeline, supervisor behavior, design decisions) instead of listing implementation changes
### Tests
- Added `e2e/bash/test_sandbox_custom_image.sh` covering image push + sandbox create with custom image
2026-02-22 20:32:18 -08:00
Drew Newberry
1c939a255a
feat(sandbox): enable port forwarding and setup openclaw ( !33 )
2026-02-19 16:03:23 -08:00
Drew Newberry
4ef5c0d2dd
chore(ci): speed up ci builds and improve caching ( !20 )
2026-02-13 11:06:25 -08:00
Drew Newberry
d2f3ca71d4
feat(sandbox): add callable python exec API and refresh e2e coverage ( !19 )
...
Closes #13
## Summary
- add Python sandbox execution APIs for command and callable workflows
- consolidate sandbox policy fixtures and expand e2e test coverage for policy and Python exec paths
- update CI/build config and images for sandbox e2e execution dependencies
## Test Plan
- mise run pre-commit
2026-02-12 23:30:24 -08:00
Piotr Mlocek
c094769a43
feat(server): add an inference router ( !13 )
...
Closes #3
2026-02-11 19:09:14 -08:00
Drew Newberry
894c419e93
fix(ci): publish_ecr_images correctly publishes images ( !15 )
2026-02-10 23:04:32 -08:00
John Myers
87b2446501
feat(sandbox): OPA policy engine with process-identity binding
2026-02-10 10:57:31 -08:00
Drew Newberry
24b9654ea8
feat(cluster): add remote SSH deployment
2026-02-10 08:25:43 -08:00
John Myers
ff127c6ab2
chore(sandbox): add networking tools to sandbox image
2026-02-05 15:54:02 -08:00
Drew Newberry
e34444adf9
feat(sandbox): add ssh connect to sandbox + build agent harness
2026-02-05 07:58:20 -08:00
Drew Newberry
207ebe4a43
chore: cleanup docker/kube/helm infra
2026-02-04 23:00:17 -08:00