Status: The SSH-remote feature (programad-remote, ~6,800 lines of Go in daemon/remote/ + the remote-ssh surface in Sources/Workspace.swift/RemoteRelayZshBootstrap.swift/CLI/cmux.swift) is kept but currently unexercised/unmaintained in the Programa fork — nobody uses SSH-remote sessions today. The code and the release daemon assets are retained so the feature can be revived later without re-porting from upstream.
Before anyone relies on SSH-remote again, fix these:
1. ~/.cmux → ~/.programa relay-path split-brain (would break a live session)
The local CLI bootstrap writes/reads ~/.cmux/... while the Go daemon writes/reads ~/.programa/... — they no longer agree, so the reverse-relay auth handshake would fail.
- CLI side (still
~/.cmux): CLI/cmux.swift — relay auth ~/.cmux/relay/<port>.auth (~line 1065); bootstrap ~/.cmux/relay/<port>.{bootstrap.sh,tty,shell} (~4431, 4439–4440, 4473, 4558, 4635, 4763–4764); CLI install path ~/.cmux/bin/cmux (~4480, 4524–4525, 4757).
- Daemon side (already
~/.programa): daemon/remote/cmd/programad-remote/cli.go — ~/.programa/socket_addr (~489, 496), ~/.programa/relay/<port>.auth (~513).
- Fix: align both on
~/.programa, and the CLI install path on ~/.programa/bin/programa (the bundled binary is now programa, not cmux).
2. Verify the relay/bootstrap end-to-end
The tests_v2/test_ssh_remote_*.py suite exercises this over Docker/SSH on the VM — run it once the paths are aligned.
Related deferred brand items
com.cmux.* dispatch-queue labels and the ~/.cmux references are part of the broader brand cleanup; this issue is the functional blocker specifically for SSH-remote.
Status: The SSH-remote feature (
programad-remote, ~6,800 lines of Go indaemon/remote/+ the remote-ssh surface inSources/Workspace.swift/RemoteRelayZshBootstrap.swift/CLI/cmux.swift) is kept but currently unexercised/unmaintained in the Programa fork — nobody uses SSH-remote sessions today. The code and the release daemon assets are retained so the feature can be revived later without re-porting from upstream.Before anyone relies on SSH-remote again, fix these:
1.
~/.cmux→~/.programarelay-path split-brain (would break a live session)The local CLI bootstrap writes/reads
~/.cmux/...while the Go daemon writes/reads~/.programa/...— they no longer agree, so the reverse-relay auth handshake would fail.~/.cmux):CLI/cmux.swift— relay auth~/.cmux/relay/<port>.auth(~line 1065); bootstrap~/.cmux/relay/<port>.{bootstrap.sh,tty,shell}(~4431, 4439–4440, 4473, 4558, 4635, 4763–4764); CLI install path~/.cmux/bin/cmux(~4480, 4524–4525, 4757).~/.programa):daemon/remote/cmd/programad-remote/cli.go—~/.programa/socket_addr(~489, 496),~/.programa/relay/<port>.auth(~513).~/.programa, and the CLI install path on~/.programa/bin/programa(the bundled binary is nowprograma, notcmux).2. Verify the relay/bootstrap end-to-end
The
tests_v2/test_ssh_remote_*.pysuite exercises this over Docker/SSH on the VM — run it once the paths are aligned.Related deferred brand items
com.cmux.*dispatch-queue labels and the~/.cmuxreferences are part of the broader brand cleanup; this issue is the functional blocker specifically for SSH-remote.