Skip to content

feat(gateway,cli): windows compilation support - #2496

Open
araza008 wants to merge 34 commits into
NVIDIA:mainfrom
araza008:windows_compilation
Open

feat(gateway,cli): windows compilation support#2496
araza008 wants to merge 34 commits into
NVIDIA:mainfrom
araza008:windows_compilation

Conversation

@araza008

@araza008 araza008 commented Jul 27, 2026

Copy link
Copy Markdown

Summary

compile the OpenShell gateway and CLI natively on Windows MSVC for x86-64 and arm64. It is build support only. It does not add functional Windows support for MXC, the sandbox supervisor, or Windows services.

Related Issue

Changes

adds windows mise tasks
supports bundled-z3 with optional system z3
gates unix-only dependencies so the geteway and cli compile on windows
adds linting and pre-commit tasks

Testing

mise run --skip-tools windows:build:x64
mise run --skip-tools windows:build:arm64

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (if applicable)

@copy-pr-bot

copy-pr-bot Bot commented Jul 27, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

All contributors have signed the DCO ✍️ ✅
Posted by the DCO Assistant Lite bot.

@araza008

Copy link
Copy Markdown
Author

I have read the DCO document and I hereby sign the DCO.

1 similar comment
@jamieknvidia

Copy link
Copy Markdown

I have read the DCO document and I hereby sign the DCO.

@drew drew changed the title Windows compilation feat(gateway,cli): windows compilation support Jul 28, 2026
@drew

drew commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

/ok to test d0bcaca

@gburachas

Copy link
Copy Markdown

I have read the DCO document and I hereby sign the DCO.

shailendra-nv and others added 19 commits July 28, 2026 18:07
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Giedrius Burachas <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Why: windows-msvc-build-design.mdx is a design document ("design decisions for
the native Windows MSVC build lane"), but it lived in the published, user-facing
docs/reference/ tree. Per AGENTS.md (Documentation) and architecture/README.md
("rfc/ vs architecture/"), design content belongs in architecture/ (or rfc/),
not in published reference. It also shared Fern sidebar "position: 6" with the
MXC compute-driver design page, colliding in the Reference nav ordering.

What:
- Move docs/reference/windows-msvc-build-design.mdx ->
  architecture/windows-msvc-build.md.
- Strip the Fern publish frontmatter and add a plain H1, matching the other
  architecture docs.
- Register it in the architecture doc index in architecture/README.md.
- Repoint the inbound references (build-openshell-mxc-windows skill + reference,
  implement-openshell-mxc-driver skill) to the new path.

With both design pages moved out of docs/reference/, the duplicate position-6
sidebar collision is resolved.

Signed-off-by: Akber Raza <[email protected]>
…est exclusion list

Signed-off-by: Akber Raza <[email protected]>

# Conflicts:
#	tasks/scripts/windows-msvc.ps1
openshell-gateway-interceptors failed to compile on Windows (E0432: no UnixStream in tokio::net), breaking any Windows build of openshell-server (which depends on it unconditionally). The connect_unix_endpoint fn was already #[cfg(unix)]-gated, but the imports it uses (UnixStream, TokioIo, Uri, service_fn) were left ungated. Gate those four imports with #[cfg(unix)] too. No behavior change on unix; Windows now compiles (no errors, no unused-import warnings).

Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
Signed-off-by: Shailendra Singh <[email protected]>
Signed-off-by: Akber Raza <[email protected]>
@araza008
araza008 force-pushed the windows_compilation branch from d0bcaca to 6d0f148 Compare July 29, 2026 14:56
@araza008

Copy link
Copy Markdown
Author

/ok to test 15c622a

@araza008

Copy link
Copy Markdown
Author

/ok to test 7c96e78

@drew

drew commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

/ok to test 7c96e78

@araza008

Copy link
Copy Markdown
Author

/ok to test 923ecf0

@araza008

Copy link
Copy Markdown
Author

/ok to test c1d5e98

@araza008

Copy link
Copy Markdown
Author

/ok to test d1fa290

1 similar comment
@pimlock

pimlock commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

/ok to test d1fa290

From the OpenShell checkout root, use:

```powershell
git fetch gitlab main

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should the gitlab references be converted into github? or make the skill origin-agnostic?

@pimlock

pimlock commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

One question came up while reviewing this - was having driver crates conditional in the server crate, rather than rely on stubs for each driver considered?

I did a quick spike here and I think this should work, but don't have a windows machine to check: araza008/OpenShell@windows_compilation...NVIDIA:OpenShell:spike/windows-exclude-unsupported-drivers

This way driver crates don't need any conditions, they are just excluded from the build process. There are some guard required in the server crate itself, but that seems a bit less intrusive than condition + a stub for all driver crates.

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.

7 participants