Skip to content

Proposal: first-class SSH workspaces (cmux parity) — connection manager, remote-tmux persistence, image paste + agent notifications over SSH #135

Description

@denis-berezutskiy

Hi! I've been running Limux over SSH a lot and put together a branch that brings the cmux SSH experience to Limux. I would like to bring those changes to the main branch of the project, but before I open PR, I wanted to check whether you'd want this upstream and, if so, in what shape.

What it adds (all mirroring existing cmux features):

  • SSH connection manager — an "SSH HOSTS" sidebar section (add/edit/delete + click-to-connect) reading ~/.ssh/config; connecting opens a workspace whose pane execs ssh. Re-clicking a host reuses its workspace instead of duplicating it.
  • Persistence + auto-reconnect — remote tmux new-session -A so work survives drops/reboots; on a dropped link the pane reconnects in place (capped backoff).
  • Clipboard image paste — locally, and into a remote agent by scp-ing the image and injecting the remote path (Limux has no image paste today).
  • Agent notifications over SSH — a coding agent running on the remote raises desktop notifications on the local machine (OSC-777 fallback when the control socket isn't reachable), with opt-in provisioning of a small static helper.

Why it should be low-risk to take:

  • Zero new dependencies — ssh/scp/tmux are invoked as external tools; no new crates in Cargo.toml/Cargo.lock.
  • Fully opt-in / back-compatible — dormant until you open an SSH host; old session.json files load unchanged (new fields are #[serde(default)]); a non-SSH user pays zero new runtime cost.
  • Passes the scripts/check.sh gate (fmt + clippy -D warnings + tests) and adds regression tests in the established shape.

What I'd like to know:

  1. Is SSH support something you want in Limux, or do you have your own design/plan for it? (Happy to hand over the design notes if you'd rather implement it yourself.)
  2. If you'd take a contribution — would you prefer one PR, or a stacked series of smaller PRs (for example ① connection manager + workspaces → ② persistence/auto-reconnect → ③ image paste → ④ notifications)?
  3. Any additional constraints I should honor up front (dependency policy, packaging, platform scope, commit/style conventions beyond what's in AGENTS.md)?

I've kept everything close to how cmux behaves — where I diverge (a GUI host book vs cmux's ssh -G/URL flow; real tmux vs cmux's daemon; OSC-777 vs cmux's reverse relay) it's a deliberate Linux-native substitution, and I'm glad to adjust.

Thanks for Limux!

And here is a couple of screenshots of how it looks like in GUI:

Raw:
Image

With comments:
Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions