Skip to content

Windows Deployment — Xferity as a Native Binary on Windows Server

Xferity is a single Go binary with no external runtime dependencies. It runs natively on Windows without any special installation or framework requirements.

This page covers the Windows-specific deployment considerations and the most common Windows-native patterns.

Many teams replacing WinSCP scripts, scheduled transfer tasks, or legacy Windows-based MFT software want to keep the runtime on Windows. Xferity supports this path directly.

Common Windows deployment patterns:

  • replacing a collection of WinSCP or PowerShell scripts with Xferity flows
  • running as a Windows service (via NSSM, winsw, or Windows Task Scheduler)
  • replacing legacy MFT server software with a single Go binary under explicit operational control

Download or build the Windows binary. The binary is a standard Windows .exe. Run it from Command Prompt or PowerShell:

Terminal window
xferity.exe validate
xferity.exe diag payroll-upload
xferity.exe run payroll-upload
xferity.exe run-service payroll-upload --interval-seconds 300

The binary reads config from ./config/config.yaml by default or from a path specified with --config.

Use forward slashes or double backslashes in config paths. Both work in YAML on Windows:

storage:
base_path: C:/xferity/storage
logging:
file: C:/xferity/logs/xferity.log
audit:
path: C:/xferity/audit/audit.jsonl
Terminal window
nssm install Xferity C:\xferity\xferity.exe
nssm set Xferity AppParameters "run-service payroll-upload --interval-seconds 300"
nssm set Xferity AppDirectory C:\xferity
nssm set Xferity AppStdout C:\xferity\logs\service-stdout.log
nssm set Xferity AppStderr C:\xferity\logs\service-stderr.log
nssm start Xferity

Create a xferity-service.xml file:

<service>
<id>xferity</id>
<name>Xferity MFT</name>
<description>Xferity Managed File Transfer</description>
<executable>C:\xferity\xferity.exe</executable>
<arguments>run-service payroll-upload --interval-seconds 300</arguments>
<workingdirectory>C:\xferity</workingdirectory>
<logpath>C:\xferity\logs</logpath>
<log mode="roll-by-size"/>
</service>

For simpler on-demand flows, Windows Task Scheduler works well:

  1. Create a Basic Task
  2. Set the trigger (e.g., every 15 minutes)
  3. Set the action to run xferity.exe run payroll-upload
  4. Set the start-in directory to the Xferity working directory

Note: Task Scheduler is not the same as a persistent service-style runner. If the flow takes longer than the trigger interval, tasks may overlap unless you configure “Do not start a new instance if already running.”

For overlapping protection, use Xferity’s built-in flow locking (lock_wait) rather than relying on Task Scheduler deduplication alone.

If flows use pgp.provider=gnupg or pgp.provider=auto, GnuPG must be installed and accessible. The default install location on Windows is:

C:\Program Files (x86)\GnuPG\bin\gpg.exe

Configure the path explicitly in the flow:

pgp:
provider: auto
gnupg_binary: "C:/Program Files (x86)/GnuPG/bin/gpg.exe"

If GnuPG is not installed or not accessible, provider=gnupg will fail at startup validation and provider=auto will not be able to fall back.

When using SFTP, the known_hosts file follows the same file: reference format as on Linux:

sftp:
known_hosts: file:C:/xferity/config/known_hosts

Generate the initial known_hosts on Windows using the bundled ssh-keyscan from Git for Windows or OpenSSH for Windows:

Terminal window
ssh-keyscan -H sftp.partner.example >> C:\xferity\config\known_hosts

The logging configuration supports log file rotation:

logging:
output: file
file: C:/xferity/logs/xferity.log
max_size: 100 # MB before rotation
max_backups: 5
max_age: 30 # days
compress: true

Windows has a default MAX_PATH of 260 characters. For deep directory structures, either:

  • keep paths short
  • enable long path support via Group Policy (HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled = 1)
  • a pre-built Windows installer or MSI package
  • a Windows GUI application
  • Windows Event Log integration by default (redirect stdout/stderr to files via NSSM or winsw)
  • automatic Windows service registration without a third-party service wrapper