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

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