Skip to content

Windows development

Workgate supports native Windows executors and uses shared Python code where practical. This page points developers to platform-specific parts of the code and their tests.

Relevant components

  • Files, Git and transfers use the shared filesystem and protocol implementations.
  • Commands use native PowerShell and Python subprocess behavior.
  • Persistent interactive terminals use ConPTY through pywinpty.
  • Managed Control, Colocate and Executor services use the current user's Task Scheduler.
  • Native desktop automation uses Windows UI Automation and the interactive desktop.
  • Process containment uses Windows Job Objects where descendant cleanup is needed.

Follow Executor source and Windows platform modules for implementation details.

Develop and test

Run Python 3.14 on native Windows. Use the normal development checks for shared code, plus Windows-native tests for service startup, shell behavior, terminal ownership, GUI access and transfers.

Look under the project's scripts/validation directory for native smoke checks. Run the check corresponding to the behavior you changed and verify the real native service or subprocess when relevant. The CI workflow identifies the required Windows test jobs.

Common problems

Problem Check
PowerShell command fails Shell executable, quoting, current workdir and exit code
Interactive terminal unavailable Logged-in user session and pywinpty/ConPTY support
Service does not start Task Scheduler task status, action, account and Workgate service logs
GUI tools unavailable Logged-in unlocked interactive desktop and application permissions
Windows ARM64 dependency build fails Matching release wheel, or ARM64 MSVC, Rust and OpenSSL SDK in development builds

For supported installation and upgrade commands, see Install Workgate and the source upgrade guide. Avoid duplicating OS-level implementation details here; source and native tests define the behavior.