mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-29 07:23:25 +08:00
* docs(windows): route main documentation to the Windows release branch Signed-off-by: Shailendra Singh <shailendras@nvidia.com> * docs(windows): include native MXC tests in full validation Signed-off-by: Shailendra Singh <shailendras@nvidia.com> * docs(windows): address documentation review feedback Signed-off-by: Shailendra Singh <shailendras@nvidia.com> * docs(windows): include E2E in full validation Signed-off-by: Shailendra Singh <shailendras@nvidia.com> * docs(windows): stop validation after any failed task Signed-off-by: Shailendra Singh <shailendras@nvidia.com> * docs(windows): simplify quickstart and installation guidance Signed-off-by: Drew Newberry <anewberry@nvidia.com> --------- Signed-off-by: Shailendra Singh <shailendras@nvidia.com> Signed-off-by: Drew Newberry <anewberry@nvidia.com> Co-authored-by: Drew Newberry <anewberry@nvidia.com>
114 lines
5.4 KiB
Markdown
114 lines
5.4 KiB
Markdown
# Native Windows support
|
|
|
|
The [`windows` branch](https://github.com/NVIDIA/OpenShell/tree/windows) is the
|
|
development and release branch for native Windows OpenShell. The Windows
|
|
implementation stays on that branch. This guide and other shared documentation
|
|
can also appear on `main`; their presence there does not move the Windows
|
|
implementation or release source to `main`.
|
|
|
|
Native Windows uses Microsoft MXC ProcessContainer isolation on x64 and ARM64.
|
|
It is separate from running Linux OpenShell inside WSL 2. Docker, Podman,
|
|
Kubernetes, and MicroVM are not native Windows compute backends.
|
|
|
|
## Runtime and current limits
|
|
|
|
The gateway links the MXC compute driver. It starts a trusted
|
|
`openshell-supervisor.exe` on the host and an
|
|
`openshell-windows-sandbox.exe` boundary inside each ProcessContainer. The pair
|
|
uses the authenticated Sandbox Protocol for process operations and forwarding.
|
|
The host supervisor applies network policy and endpoint-bound provider credentials
|
|
through an authenticated explicit proxy. Workloads must support that proxy.
|
|
|
|
MXC maps filesystem and UI policy to native controls. This implementation is
|
|
under development and is not a production-qualified security boundary:
|
|
|
|
- Outer-fence guarantees are temporarily asserted for compatibility testing.
|
|
Exclusive supervisor-mediated egress and live access revocation are unverified.
|
|
- The loopback exception can expose unrelated host-local services to workloads.
|
|
Treat the gateway host as trusted.
|
|
- Foreground main-process attachment and ConPTY resize are unavailable. Create
|
|
command workloads with `--detach`.
|
|
- Gateway restart recovery for live MXC generations is not supported.
|
|
|
|
See the Windows branch's [MXC driver documentation](https://github.com/NVIDIA/OpenShell/blob/windows/crates/openshell-driver-mxc/README.md)
|
|
for the current capabilities and enforcement limits, and its
|
|
[boundary library documentation](https://github.com/NVIDIA/OpenShell/blob/windows/crates/openshell-mxc-boundary/README.md)
|
|
for the runtime architecture. Passing build or E2E checks does not establish
|
|
the missing security guarantees.
|
|
|
|
## Get the Windows source
|
|
|
|
Use a separate checkout so an existing `main` checkout can remain in place:
|
|
|
|
```powershell
|
|
git clone --branch windows https://github.com/NVIDIA/OpenShell.git OpenShell-windows
|
|
Set-Location OpenShell-windows
|
|
mise trust
|
|
```
|
|
|
|
Base native Windows implementation changes on `windows` and target that branch
|
|
for review. Documentation-only changes can also merge into `main`, while
|
|
retaining explicit `windows` branch links for Windows code, tasks, and runtime
|
|
instructions. The `main` installer and its dev, prerelease, and stable artifacts
|
|
are not the native Windows distribution path.
|
|
|
|
## Build
|
|
|
|
Use Windows with rustup, mise, Visual Studio C++ Build Tools, a Windows SDK,
|
|
and host-compatible LLVM/libclang. Install the MSVC components for each target
|
|
you build, including ARM64 tools and Spectre-mitigated libraries for ARM64.
|
|
The [Windows build skill](https://github.com/NVIDIA/OpenShell/blob/windows/.agents/skills/build-openshell-mxc-windows/SKILL.md)
|
|
lists the full prerequisites and environment overrides.
|
|
|
|
Run the build matching your target:
|
|
|
|
```powershell
|
|
# x64
|
|
mise run --skip-tools windows:build:x64
|
|
|
|
# ARM64
|
|
mise run --skip-tools windows:build:arm64
|
|
```
|
|
|
|
The tasks produce `openshell.exe`, `openshell-gateway.exe`,
|
|
`openshell-supervisor.exe`, and `openshell-windows-sandbox.exe` under
|
|
`target/<target-triple>/release/`. Keep these binaries from the same build
|
|
together with the matching `libz3.dll` staged by the build task. The target
|
|
triples are `x86_64-pc-windows-msvc` and `aarch64-pc-windows-msvc`.
|
|
`CARGO_TARGET_DIR` can override the output root.
|
|
|
|
The build uses pinned prebuilt Z3 by default. Compile and test hosts do not
|
|
need a working MXC runtime; running native sandboxes does. These tasks do not
|
|
install an MSI, register a Windows service, or publish a release.
|
|
|
|
## Prepare and run MXC
|
|
|
|
Use MXC 1.0.0 and a host that passes the native ProcessContainer capability
|
|
probe. Place `wxc-exec.exe` outside `WindowsApps` or an MSIX package directory
|
|
and configure its absolute path.
|
|
|
|
```powershell
|
|
& "C:\mxc\wxc-exec.exe" --probe
|
|
```
|
|
|
|
`probes.baseContainerSupportsIngressHostLoopbackAllow` must be `true`.
|
|
A Windows version number alone does not establish runtime compatibility.
|
|
Configure `compute_driver = "mxc"` and use the matching
|
|
[Windows gateway configuration](https://github.com/NVIDIA/OpenShell/blob/windows/docs/how-it-works/gateways/configuration.mdx#configure-mxc)
|
|
and [example gateway TOML](https://github.com/NVIDIA/OpenShell/blob/windows/crates/openshell-driver-mxc/examples/mxc-gateway.toml).
|
|
Command-based sandbox creation requires administrator opt-in with
|
|
`allow_driver_config = true`, a workload command and working directory, and
|
|
`--detach`. Use a sandbox policy to grant the required filesystem and network
|
|
access.
|
|
|
|
## Validate
|
|
|
|
Follow [native Windows validation](https://github.com/NVIDIA/OpenShell/blob/windows/TESTING.md#native-windows-validation)
|
|
for native x64 or ARM64 lint, build, unit tests, and real MXC tests. Cross-building
|
|
ARM64 on x64 does not run native ARM64 tests. Real MXC tests and E2E require a
|
|
capable host; record probe-gated skips separately from passes.
|
|
|
|
The [Windows CI guidance](https://github.com/NVIDIA/OpenShell/blob/windows/CI.md#windows-validation)
|
|
describes opt-in PR checks and branch builds. A successful compilation or an
|
|
advisory CI run is not a Windows release qualification result.
|