Skip to content

Support multiple remote Herdr servers #334

Description

@icedac

Current behavior

Herdr currently has a 1:1 client/server attach model.

  • herdr attaches to one local headless server.
  • herdr --remote <target> attaches to one remote headless server.
  • For users working across two or more local/remote Herdr or tmux-backed servers, the practical workaround is still separate windows or nested Herdr/tmux sessions.

That nesting technically works, but even two layers create friction: shortcuts become ambiguous, mouse UI actions can go to the wrong layer or stop working reliably, and host-terminal features such as image paste do not behave consistently.

Requested change

It would be genuinely useful if a user could add remote Herdr headless servers once, then use several servers from one Herdr sidebar almost as if they were one server.

Desired user experience:

  • launch herdr locally or herdr --remote <target>;
  • treat the launched server as the main server;
  • use menu -> add remote to add another remote host or localhost;
  • show local and remote workspaces/agents together in the sidebar;
  • click a workspace or agent to switch to that server;
  • cycle the spaces header through all -> local/main -> remote...;
  • when creating a workspace from all, ask which server should receive it.

The server boundary should be visible only as lightweight labels such as local, x, or x herdr, not as another nested terminal app.

Reason

Many tmux users work locally while also managing several remote development or service hosts. Today that means the user has to remember which server owns which workspace, which nested UI currently has focus, and where a new shell or agent will be created.

This feature would trade internal Herdr complexity for a simpler user workflow: one client, one sidebar, clear server labels, and predictable workspace/agent routing.

Product impact

Yes, this changes UI and workflow expectations. It adds an add remote flow and makes the sidebar a multi-server navigation surface.

Non-goals:

  • do not merge panes, PTYs, processes, or runtime state across machines;
  • do not move workspaces between servers;
  • do not require nested Herdr UIs for the multi-server workflow;
  • do not make this a general SSH session manager.

Implementation notes draft

This is only a possible direction, not the requested user-facing contract.

  • Keep the launched server as the main server.
  • Persist only a lightweight remote registry on the main server.
  • Keep actual secondary server connections client-owned.
  • Refactor sidebar ownership so the thin client can render a unified sidebar from server/workspace/agent summary data.
  • Reuse the existing remote attach/SSH bridge where possible for secondary connections.

Metadata

Metadata

Assignees

No one assigned

    Labels

    intends-to-prOpened with intent to implement and submit a PR after approvalplanned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions