Current behavior
On a native Windows 11 client, herdr --remote <host> attaches to a Linux host and the remote UI renders and streams frames, but the window never accepts local keyboard or mouse input. No keys register and clicking panes, tabs, or the sidebar has no effect. The view stays on the last frame; the window is effectively read-only.
Observed facts:
- The remote server log shows the client connected and staying connected:
client connected client_id=58 cols=160 rows=64 ... surface_active=true render_encoding=SemanticFrame, with no disconnect.
herdr-client.log shows only herdr starting, connecting to server path=...\herdr-r-<pid>-<host>-<id>.sock, and endpoint handshake succeeded. No input, error, or warning lines.
- The bridge process is
ssh -F <temp config> -T <host> "exec <remote>/.local/bin/herdr remote-client-bridge". The same command carries stdin both ways (an interactive cat round-trip over that SSH path echoes input), so the SSH pipe itself responds.
- A local (non-remote) herdr client on the same machine, same terminal, and same binary accepts keyboard and mouse normally.
- Process state at the time:
herdr --remote <host> launcher alive, its child herdr client alive, and the ssh bridge process alive.
Expected behavior
Keyboard and mouse input in the herdr --remote window should drive the remote session, matching a local herdr client and the Linux/macOS remote attach behavior described in the docs.
Reproduction
- Windows 11 client, Windows Terminal, PowerShell 7, herdr 0.9.0-preview on the preview channel. Remote target is a Linux host running the same build, reachable with plain
ssh <host> (Tailscale SSH).
- From a plain terminal (not inside an existing herdr), run
herdr --remote <host>.
- The remote UI renders.
- Type into the window (prefix keys, characters into a pane) and click panes, tabs, and the sidebar.
- Nothing responds. The same input works in a local herdr client on the same machine.
Impact
herdr --remote from Windows is unusable: the remote session cannot be interacted with at all, even though it renders. The only working path today is ssh <host> and running herdr on the host. This matches the documented Windows remote support, so the Windows --remote client path appears broken for input.
Environment
- Herdr version: 0.9.0-preview.2026-09-08-62431dbd033b
- Update channel (stable or preview): preview
- Operating system: Windows 11 Pro 25H2, build 26200 (client); Linux (remote host)
- Terminal: Windows Terminal
- Shell, if relevant: PowerShell 7 (pwsh)
- Relevant config, if any: defaults;
ui.mouse_capture unset (default true)
Current behavior
On a native Windows 11 client,
herdr --remote <host>attaches to a Linux host and the remote UI renders and streams frames, but the window never accepts local keyboard or mouse input. No keys register and clicking panes, tabs, or the sidebar has no effect. The view stays on the last frame; the window is effectively read-only.Observed facts:
client connected client_id=58 cols=160 rows=64 ... surface_active=true render_encoding=SemanticFrame, with no disconnect.herdr-client.logshows onlyherdr starting,connecting to server path=...\herdr-r-<pid>-<host>-<id>.sock, andendpoint handshake succeeded. No input, error, or warning lines.ssh -F <temp config> -T <host> "exec <remote>/.local/bin/herdr remote-client-bridge". The same command carries stdin both ways (an interactivecatround-trip over that SSH path echoes input), so the SSH pipe itself responds.herdr --remote <host>launcher alive, its childherdr clientalive, and thesshbridge process alive.Expected behavior
Keyboard and mouse input in the
herdr --remotewindow should drive the remote session, matching a local herdr client and the Linux/macOS remote attach behavior described in the docs.Reproduction
ssh <host>(Tailscale SSH).herdr --remote <host>.Impact
herdr --remotefrom Windows is unusable: the remote session cannot be interacted with at all, even though it renders. The only working path today isssh <host>and runningherdron the host. This matches the documented Windows remote support, so the Windows--remoteclient path appears broken for input.Environment
ui.mouse_captureunset (defaulttrue)