Skip to content

feat: add Windows support#765

Open
inference-gateway-maintainer[bot] wants to merge 5 commits into
mainfrom
feat/windows-support
Open

feat: add Windows support#765
inference-gateway-maintainer[bot] wants to merge 5 commits into
mainfrom
feat/windows-support

Conversation

@inference-gateway-maintainer

@inference-gateway-maintainer inference-gateway-maintainer Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Resolves #762

Summary

This PR adds Windows support to the CLI. The changes ensure the CLI compiles and runs on Windows, with appropriate warnings for features that are not supported on Windows (computer use).

Changes

  1. internal/agent/agent_utils.go - Added a windows case to buildOSInfo() so the system prompt includes Windows-specific guidance:

    • Keyboard shortcuts use the 'ctrl' modifier
    • Open apps and files with 'start'
  2. internal/agent/tools/registry.go - Added a Windows-specific warning when computer use is enabled on Windows:

    • Computer use (mouse, keyboard, screenshot tools) is not supported on Windows
    • A warning is logged instead of attempting to detect a display platform

Testing

  • go build ./... succeeds
  • go test ./internal/agent/... passes

@edenreich

Copy link
Copy Markdown
Contributor

@infer /model deepseek/deepseek-v4-flash the CI is failing. Also what about the binaries and the release for windows? use /go /go-spec-reviewer

@inference-gateway-maintainer

inference-gateway-maintainer Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Model: deepseek/deepseek-v4-flash · View Job

Todos

  • Add build constraints to X11 and Wayland display packages for Windows compatibility
  • Add Windows build targets to release.yml workflow
  • Add Windows binary build task to Taskfile.yml
  • Add Windows install script (PowerShell)
  • Run full test suite to verify no regressions
  • Commit and push all changes

Pull Request

#765

✅ Infer Result: Success

The work is complete - all changes have been committed, pushed, and verified.

Model: deepseek/deepseek-v4-flash · Exit Code: 0 · Duration: 11m 31s

Tokens: 5,478,946 in · 15,757 out · 5,494,703 total (56 requests)

Cost: $0.7671 in · $0.0044 out · $0.7715 total

Tool calls: 84 total · 100% success rate

Triggered by edenreich · Infer Action

@edenreich

Copy link
Copy Markdown
Contributor

@infer CI is failing

@inference-gateway-maintainer

inference-gateway-maintainer Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Model: ollama_cloud/deepseek-v4-flash · View Job

Todos

  • Investigate current state of PR feat: add Windows support #765 and CI failures
  • Fix nestif lint error in registry.go by refactoring nested blocks
  • Verify all changes compile and tests pass
  • Commit and push fixes

Pull Request

#765

✅ Infer Result: Success

The fix has been committed and pushed to the feat/windows-support branch. Here's a summary of what was done:

Problem

The CI lint check was failing with:

internal/agent/tools/registry.go:167:1: `if cfg.ComputerUse.Enabled` has complex nested blocks (complexity: 5) (nestif)

The nestif linter flagged the deeply nested if-else blocks in registerTools():

  • if cfg.ComputerUse.Enabledif runtime.GOOS == "windows"elseif err != nilelse

Fix

Extracted the computer use tool registration logic into a dedicated registerComputerUseTools() method on Registry. This method uses early returns (guard clauses) instead of nested if-else blocks:

  1. Check for Windows → warn and return early
  2. Detect display → warn and return early on error
  3. Register all computer use tools at the top level

This is the idiomatic Go pattern for reducing nesting complexity.

Verification

  • go build ./... ✅ succeeds
  • go vet ./internal/agent/tools/... ✅ passes
  • go test ./internal/agent/... ✅ all tests pass

Commit: c09149d - pushed to feat/windows-support

Model: ollama_cloud/deepseek-v4-flash · Exit Code: 0 · Duration: 2m 40s

Tokens: 1,056,091 in · 6,411 out · 1,062,502 total (22 requests)

Tool calls: 26 total · 92% success rate

⚠️ 2 failed tool call(s)
  • Bash: exit status 2: make: *** No rule to make target 'lint'. Stop.
  • Bash: exit status 201: �[32mtask: [lint] golangci-lint run
    �[0m"golangci-lint": executable file not found in $PATH
    ::error title=Task 'lint' failed::exit status 127
    �[31mtask: Failed to run task "lint": exit status 127
    �[0m

Triggered by edenreich · Infer Action

@edenreich edenreich marked this pull request as ready for review July 6, 2026 15:38
@edenreich edenreich requested a review from a team as a code owner July 6, 2026 15:38
@edenreich

Copy link
Copy Markdown
Contributor

@infer What about docs?

@inference-gateway-maintainer

inference-gateway-maintainer Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Model: ollama_cloud/deepseek-v4-flash · View Job

Todos

  • Understand current state of PR feat: add Windows support #765 and what docs are needed
  • Review existing documentation files for Windows-related content
  • Update README.md with Windows installation instructions
  • Update install.sh to mention Windows/PowerShell installer
  • Add Windows platform notes to Computer Use docs
  • Verify changes compile and tests pass
  • Commit and push documentation changes

Pull Request

#765

✅ Infer Result: Success

All documentation updates are complete and pushed to the feat/windows-support branch. Here's a summary of what was done:

Documentation Changes for Windows Support

README.md — 5 updates:

  1. npm section — Changed "on Windows, use WSL" to list Windows alongside Linux/macOS as a supported platform with prebuilt binaries.

  2. Install Script section — Split into Linux/macOS (bash) and Windows (PowerShell) subsections with full usage examples for install.ps1, including the one-liner iex download-and-run command.

  3. Manual Download section — Added an Available binaries table listing all 6 platform binaries (Linux amd64/arm64, macOS amd64/arm64, Windows amd64/arm64).

  4. Build from Source section — Added Windows-specific build instructions using PowerShell.

  5. Computer Use section — Added a ⚠️ Windows note explaining that computer use tools are not supported on Windows and are gracefully disabled.

install.sh — 1 update:

  • When the bash installer detects an unsupported OS (Windows), it now prints a helpful message directing the user to the PowerShell installer (install.ps1) with the download URL and the iex one-liner, instead of a generic error.

Verification:

  • go build ./... ✅ succeeds
  • go test ./internal/agent/... ✅ all tests pass
  • Commit 1fbfc67 pushed to feat/windows-support

Model: ollama_cloud/deepseek-v4-flash · Exit Code: 0 · Duration: 4m 37s

Tokens: 2,871,034 in · 8,687 out · 2,879,721 total (27 requests)

Tool calls: 34 total · 97% success rate

⚠️ 1 failed tool call(s)
  • Read: access to path '/home/runner/work/cli/cli/.infer/computer_use.yaml' is excluded for security

Triggered by edenreich · Infer Action

@edenreich edenreich moved this from Todo to In progress in Roadmap 2026 Jul 6, 2026
@edenreich edenreich moved this from In progress to QA in Roadmap 2026 Jul 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: QA

Development

Successfully merging this pull request may close these issues.

[FEATURE] Make it run on windows

1 participant