Goal
Ship a Windows installer for Runloop, not only the current macOS DMG/ZIP release.
Current desktop release path is macOS-focused:
.github/workflows/desktop-release.yml is named Desktop DMG
- CI builds
GOOS=darwin GOARCH=arm64
- Electron packaging runs
electron-builder --mac --arm64
desktop/package.json only defines mac targets (dmg, zip)
- updater/install flow assumes GitHub DMG assets and
/Applications/Runloop.app
Desired output
Produce Windows release assets, likely one or more of:
Runloop Setup <version>.exe via NSIS
- optional
.msi later if enterprise distribution needs it
- optional portable
.exe for debugging/manual distribution
Major blockers / risk areas
1. Packaging config is macOS-only
desktop/package.json needs Windows config:
win target (nsis first; maybe msi later)
.ico icon asset
- artifact naming convention
- release asset validation in
scripts/desktop-release.sh
- GitHub Actions upload/release handling for Windows artifacts
2. CI currently builds only macOS ARM binaries
Need Windows builds for bundled Go servers:
agent-server.exe
workspace-server.exe
Likely build matrix:
- macOS arm64 existing
- Windows x64 first
- Windows arm64 later only if needed
Need confirm whether Go dependencies build cleanly on Windows, especially anything using CGO/native SQLite/process APIs.
3. Desktop main process assumes macOS update/install flow
desktop/main.js currently has DMG-specific update logic:
- downloads
Runloop-<version>-arm64.dmg
- runs shell install script with
bash
- assumes
/Applications/Runloop.app
- uses macOS dock/menu-bar behavior in several places
Windows needs separate update/install path:
- use
electron-updater or Windows-specific installer update flow
- download
.exe/NSIS asset, not DMG
- handle app restart/install safely
- avoid macOS-only commands in Windows path
4. Terminal/runtime transport depends heavily on Unix + tmux
This is the biggest functional blocker.
A lot of coding-agent flows rely on tmux for interactive terminal transport, capture, attach, idle detection, and live output.
Windows does not have native tmux. Options to decide:
- require WSL for coding-agent providers that need tmux
- build a Windows ConPTY-backed terminal adapter
- support only non-tmux/structured providers on native Windows initially
- ship a clear unsupported-provider state in UI
This needs explicit product decision because Claude Code / Cursor / Pi CLI integrations may depend on tmux-like behavior today.
5. Shell and process-management assumptions
Audit and replace platform-specific calls such as:
/bin/bash, /bin/sh, /bin/zsh
bash -lc
chmod
lsof, pgrep, pkill, kill
- POSIX signal/process-tree handling
- macOS
open, osascript, dock/menu-bar APIs where not guarded
Windows equivalents may require:
- PowerShell /
cmd.exe
taskkill
- Windows process tree cleanup
- different port-listener detection
- Windows-specific path/env handling
6. PATH and CLI discovery on Windows
Current desktop startup imports login-shell PATH on darwin/linux, but returns empty env on Windows.
Need Windows-specific CLI discovery for:
- Codex CLI
- Claude Code
- Cursor CLI
- Pi CLI
- Node/Python/git if used by workflows
- MCP bridge binaries/tools
Likely need to inspect common install locations and merge user/system PATH from Windows environment/registry where necessary.
7. File paths, permissions, and workspace behavior
Need test path behavior carefully:
- Windows drive letters (
C:\...)
- backslashes vs slash-normalized workflow paths
- spaces in paths
- executable suffix
.exe
- no Unix executable bit semantics
- symlink behavior and permissions
- long paths
- antivirus/Defender interference with generated executables/scripts
8. Localhost servers and firewall prompts
Runloop starts bundled local servers. On Windows this may trigger firewall prompts or Defender scans.
Need verify:
- localhost binding only
- ports are available and recoverable
- server startup logs are readable from app UI
- process cleanup works after app quit/crash/update
9. Browser tooling / agent-browser binaries
Any bundled or downloaded browser automation binaries need Windows support.
Need verify:
- agent-browser Windows binary availability
- Playwright/Chrome install behavior on Windows
- cleanup/leaked-browser detection uses Windows process APIs
- CDP/local Chrome behavior works without macOS assumptions
10. Code signing and SmartScreen
Windows releases should be signed before broad distribution.
Need decide:
- Authenticode certificate source
- timestamp server
- whether EV cert is needed to reduce SmartScreen friction
- CI secret storage for signing cert/password
- unsigned-dev artifact policy for internal testing
Suggested phased plan
Phase 1: Build artifact only
- Add Windows packaging config to Electron Builder.
- Add GitHub Actions job on
windows-latest.
- Build frontend static assets.
- Build
agent-server.exe and workspace-server.exe.
- Produce unsigned NSIS installer artifact.
- Do not claim all coding providers work yet.
Phase 2: App launches and core UI works
- Install on clean Windows VM.
- Verify app launches.
- Verify bundled servers start and stop.
- Verify workflow list, files, reports, org dashboard, settings.
- Verify local workspace path creation.
Phase 3: Runtime compatibility
- Decide WSL-required vs native ConPTY strategy for coding agents.
- Validate provider matrix:
- Codex CLI
- Claude Code
- Cursor CLI
- Pi CLI
- non-coding LLM providers
- Update UI to show unsupported provider states clearly.
Phase 4: Release-quality installer/update
- Add signing.
- Add Windows update path.
- Add release script validation for Windows assets.
- Add smoke tests and manual QA checklist.
Manual test checklist
- Install on fresh Windows 11 machine/VM.
- Launch app from Start Menu and desktop shortcut.
- Confirm local servers start without firewall/network errors.
- Create/open workflow.
- Use Files pane, reports, Pulse dashboard, org dashboard.
- Run a simple non-coding LLM task.
- Test at least one coding-agent provider based on chosen Windows strategy.
- Quit app and verify no leaked
agent-server.exe / workspace-server.exe / browser processes.
- Relaunch and verify schedules/state survive.
- Test update flow once Windows updater exists.
Acceptance criteria
- CI produces a Windows installer artifact.
- Installer launches Runloop on Windows.
- Bundled Go servers start and stop correctly.
- App can open the main UI and load workspace/report views.
- Windows-specific unsupported runtime limitations are explicit in UI/docs.
- Release script and GitHub release validation handle Windows assets.
Goal
Ship a Windows installer for Runloop, not only the current macOS DMG/ZIP release.
Current desktop release path is macOS-focused:
.github/workflows/desktop-release.ymlis namedDesktop DMGGOOS=darwin GOARCH=arm64electron-builder --mac --arm64desktop/package.jsononly definesmactargets (dmg,zip)/Applications/Runloop.appDesired output
Produce Windows release assets, likely one or more of:
Runloop Setup <version>.exevia NSIS.msilater if enterprise distribution needs it.exefor debugging/manual distributionMajor blockers / risk areas
1. Packaging config is macOS-only
desktop/package.jsonneeds Windows config:wintarget (nsisfirst; maybemsilater).icoicon assetscripts/desktop-release.sh2. CI currently builds only macOS ARM binaries
Need Windows builds for bundled Go servers:
agent-server.exeworkspace-server.exeLikely build matrix:
Need confirm whether Go dependencies build cleanly on Windows, especially anything using CGO/native SQLite/process APIs.
3. Desktop main process assumes macOS update/install flow
desktop/main.jscurrently has DMG-specific update logic:Runloop-<version>-arm64.dmgbash/Applications/Runloop.appWindows needs separate update/install path:
electron-updateror Windows-specific installer update flow.exe/NSIS asset, not DMG4. Terminal/runtime transport depends heavily on Unix + tmux
This is the biggest functional blocker.
A lot of coding-agent flows rely on tmux for interactive terminal transport, capture, attach, idle detection, and live output.
Windows does not have native tmux. Options to decide:
This needs explicit product decision because Claude Code / Cursor / Pi CLI integrations may depend on tmux-like behavior today.
5. Shell and process-management assumptions
Audit and replace platform-specific calls such as:
/bin/bash,/bin/sh,/bin/zshbash -lcchmodlsof,pgrep,pkill,killopen,osascript, dock/menu-bar APIs where not guardedWindows equivalents may require:
cmd.exetaskkill6. PATH and CLI discovery on Windows
Current desktop startup imports login-shell PATH on darwin/linux, but returns empty env on Windows.
Need Windows-specific CLI discovery for:
Likely need to inspect common install locations and merge user/system PATH from Windows environment/registry where necessary.
7. File paths, permissions, and workspace behavior
Need test path behavior carefully:
C:\...).exe8. Localhost servers and firewall prompts
Runloop starts bundled local servers. On Windows this may trigger firewall prompts or Defender scans.
Need verify:
9. Browser tooling / agent-browser binaries
Any bundled or downloaded browser automation binaries need Windows support.
Need verify:
10. Code signing and SmartScreen
Windows releases should be signed before broad distribution.
Need decide:
Suggested phased plan
Phase 1: Build artifact only
windows-latest.agent-server.exeandworkspace-server.exe.Phase 2: App launches and core UI works
Phase 3: Runtime compatibility
Phase 4: Release-quality installer/update
Manual test checklist
agent-server.exe/workspace-server.exe/ browser processes.Acceptance criteria