Goal
AgentBridge currently runs on macOS and Linux only; the README states Windows is not officially supported. This tracks making Windows a first-class platform. The codebase is already partly platform-aware (port cleanup has a win32 path, issue #76), so this is about closing the remaining POSIX-only gaps, not a rewrite.
Known blockers (from a source scan)
-
Unix-domain-socket transport — src/codex-transport.ts falls back to a unix:// socket (<tmp>/agentbridge-<uid>/codex-<port>.sock) for Codex builds that dropped ws:// listen support. Windows has no AF_UNIX in Node the way POSIX does (path/net semantics differ). Needs a named-pipe (\\.\pipe\...) path or a forced-ws:// strategy on win32.
-
Process-group signals — src/process-lifecycle.ts uses -pid process-group kills and POSIX signals (SIGTERM/SIGKILL). Already guarded with process.platform !== "win32" in places, but the win32 branch needs a real termination path (taskkill /T) verified end to end, not just a no-op fallback.
-
State directory — src/state-dir.ts handles darwin (~/Library/Application Support) and Linux ($XDG_STATE_HOME), but has no Windows branch. Should use %LOCALAPPDATA% (fallback %APPDATA%).
-
CI has no Windows gate for the full suite — .github/workflows/ci.yml matrix is [ubuntu-latest, macos-latest]; only a narrow windows-port-cleanup job runs on windows-latest. Without a full Windows CI leg, regressions on win32 are invisible.
-
Runtime / launcher on Windows — the bin shebang (#!/usr/bin/env bun) and the abg claude / abg codex launchers assume a POSIX shell + Bun on PATH. Needs verification that Bun + the plugin host + Codex CLI actually launch and attach on Windows (PowerShell / Windows Terminal), including any path-separator assumptions.
Suggested order
- State dir (
%LOCALAPPDATA%) — smallest, unblocks daemon state.
- Transport: named pipe or force-
ws:// on win32.
- Process termination via
taskkill /T /F, verified.
- Add a full-suite
windows-latest CI leg (expect it red first, then fix to green).
- End-to-end smoke:
abg init → abg claude → abg codex on Windows Terminal.
WSL2 likely works today (it's Linux) and can be documented as an interim path while native win32 lands.
Definition of done
- Full test suite green on
windows-latest in CI.
abg init / claude / codex complete a real pair on native Windows.
- README limitation line removed; Windows listed as supported.
Goal
AgentBridge currently runs on macOS and Linux only; the README states Windows is not officially supported. This tracks making Windows a first-class platform. The codebase is already partly platform-aware (port cleanup has a
win32path, issue #76), so this is about closing the remaining POSIX-only gaps, not a rewrite.Known blockers (from a source scan)
Unix-domain-socket transport —
src/codex-transport.tsfalls back to aunix://socket (<tmp>/agentbridge-<uid>/codex-<port>.sock) for Codex builds that droppedws://listen support. Windows has no AF_UNIX in Node the way POSIX does (path/netsemantics differ). Needs a named-pipe (\\.\pipe\...) path or a forced-ws://strategy on win32.Process-group signals —
src/process-lifecycle.tsuses-pidprocess-group kills and POSIX signals (SIGTERM/SIGKILL). Already guarded withprocess.platform !== "win32"in places, but the win32 branch needs a real termination path (taskkill /T) verified end to end, not just a no-op fallback.State directory —
src/state-dir.tshandlesdarwin(~/Library/Application Support) and Linux ($XDG_STATE_HOME), but has no Windows branch. Should use%LOCALAPPDATA%(fallback%APPDATA%).CI has no Windows gate for the full suite —
.github/workflows/ci.ymlmatrix is[ubuntu-latest, macos-latest]; only a narrowwindows-port-cleanupjob runs onwindows-latest. Without a full Windows CI leg, regressions on win32 are invisible.Runtime / launcher on Windows — the
binshebang (#!/usr/bin/env bun) and theabg claude/abg codexlaunchers assume a POSIX shell + Bun on PATH. Needs verification that Bun + the plugin host + Codex CLI actually launch and attach on Windows (PowerShell / Windows Terminal), including any path-separator assumptions.Suggested order
%LOCALAPPDATA%) — smallest, unblocks daemon state.ws://on win32.taskkill /T /F, verified.windows-latestCI leg (expect it red first, then fix to green).abg init→abg claude→abg codexon Windows Terminal.WSL2 likely works today (it's Linux) and can be documented as an interim path while native win32 lands.
Definition of done
windows-latestin CI.abg init/claude/codexcomplete a real pair on native Windows.