Skip to content

Help wanted: test & help port plumb on Windows #8

Description

@atlas-from-plumb

plumb has only been validated on macOS and Linux. Windows is not supported yet — and we'd love help from someone who runs Windows to (a) confirm exactly where it breaks today and (b) chip away at the port. This is a great issue if you're comfortable with Go on Windows.

Heads-up: the daemon will not start on Windows today

Two core pieces are POSIX-only:

  • The MCP wire is a Unix domain socketnet.Listen("unix", …) in internal/cli/daemon.go (both plumb.sock and the plumb.ctrl.sock admin socket), dialled across serve.go/restart.go/log_level.go/doctor_checks.go. There's no named-pipe / AF_UNIX path yet.
  • Singleton + session locking is syscall.Flockinternal/cli/lock.go (spawn + daemon locks) and internal/session/session.go (session-file read-modify-write). Flock is POSIX-only.

What we believe already works cross-platform (please confirm)

  • Base-dir resolution via internal/paths + adrg/xdg (%AppData% / %LocalAppData%)
  • Binary discovery via exec.LookPath (honours PATHEXT, so goplsgopls.exe)
  • file:// URIs for drive letters (protocol.FileURI: C:\xfile:///C:/x)
  • plumb setup claude-desktop (writes to %APPDATA%\Claude\)

Known rough spots beyond the blockers

  • The process monitor is a no-op stub (internal/monitor/process_windows.go)
  • Most non-Claude-Desktop plumb setup <client> targets write home dotdirs (~/.cursor, …) rather than %AppData%
  • A couple of daemon tests already t.Skip on Windows (restart_test.go, daemon_test.go)

How to help (any of these is valuable)

  1. Build & smoke-testgo build ./... on Windows 10/11 (amd64). Does it compile? Report any build breaks.
  2. Map the runtime breakage precisely — run plumb daemon, plumb serve, plumb doctor and paste the exact errors + where they originate (we expect the Unix-socket bind to fail first).
  3. Confirm the "should-work" list above (paths, LookPath/PATHEXT, FileURI, setup claude-desktop).
  4. Stretch — port the blockers: a Windows transport (named pipe or Win10+ AF_UNIX) behind an OS-abstracted listener/dialer, and a Windows file-lock (LockFileEx, or a small lib) behind a build-tagged lock_windows.go / lock_unix.go. Happy to advise on the seam.

Please include: Windows version + build, Go version, and full command output. Comment here to claim a piece so we don't overlap.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions