Skip to content

Windows support: daemon fails to start (Unix domain sockets EACCES) #3

@theflysurfer

Description

@theflysurfer

Problem

On Windows, walkie create fails with:

Error: Failed to start walkie daemon. Check ~/.walkie/daemon.log for details

The daemon starts (PID file is written, log shows Daemon started) but the IPC socket is never created. The client cannot connect.

Root cause: net.createServer().listen(filepath) with a regular file path fails with EACCES on Windows. Unix domain sockets on Windows require either:

  • A Named Pipe path (\.\pipe\walkie-daemon)
  • Or special permissions

Repro

npm install -g walkie-sh
walkie create test -s secret
# Error: Failed to start walkie daemon

Verified on Windows 11, Node.js v22.x, walkie-sh 1.3.0.

Fix

Replace the SOCKET_PATH constant in both src/daemon.js and src/client.js:

// Before
const SOCKET_PATH = path.join(WALKIE_DIR, 'daemon.sock')

// After
const SOCKET_PATH = process.platform === 'win32'
  ? '\\.\pipe\walkie-daemon'
  : path.join(WALKIE_DIR, 'daemon.sock')

This uses Windows Named Pipes which are the native equivalent of Unix domain sockets. The fix is backward-compatible — Unix/macOS behavior is unchanged.

Tested

After patching, all commands work on Windows:

$ walkie create test-room -s secret
Channel "test-room" created. Listening for peers...

$ WALKIE_ID=test2 walkie join test-room -s secret
Joined channel "test-room"

$ WALKIE_ID=test1 walkie send test-room "hello"
Sent (delivered to 1 recipient)

$ WALKIE_ID=test2 walkie read test-room
[01:40:20] test1: hello

$ walkie status
Daemon ID: 6ab08093
  #test-room — 0 peer(s), 2 subscriber(s), 0 buffered

Happy to open a PR if you'd like.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions