Feature request: remote tab support
Each tab should be able to run either a local or remote agent session.
User flow
- New tab → choose Local or Remote
- Remote opens a host picker modal:
- List of saved hosts with nickname + hostname
- Live reachability indicator per host (green dot / grey / spinner)
- + Add host… option at the bottom
- Selecting a host opens a new tab connected to that machine
Host picker UI
┌──────────────────────────────────────┐
│ Choose a remote machine │
│ │
│ ● Home PC 192.168.1.42 │
│ ● Work Laptop work.tail…net │
│ ● Raspberry Pi pi.local │
│ │
│ ───────────────────────────────── │
│ + Add host… │
└──────────────────────────────────────┘
Add host form fields
- Nickname (display name)
- Hostname / IP
- Port (default 22)
- Username
- SSH key path (file picker)
- Default project path (optional)
"Add & test" button does an immediate reachability check on save.
Data storage
Persist host list as hosts.json in the Tauri app data directory.
{
"hosts": [
{
"id": "uuid",
"nickname": "Home PC",
"hostname": "192.168.1.42",
"port": 22,
"user": "arjen",
"key_path": "~/.ssh/id_ed25519",
"default_project": "/home/arjen/projects/myapp"
}
]
}
Backend (Rust/Tauri)
Required Tauri commands:
list_hosts() → Vec<Host>
add_host(host) → Host
remove_host(id) → ()
check_reachability(hostname, port) → bool — TCP connect with 2s timeout (no root required)
Reachability checks run in parallel when the modal opens.
SSH execution via russh crate (async, no system SSH dependency):
russh = "0.44"
russh-keys = "0.44"
Network
- Same LAN: direct IP
- Cross-network: Tailscale recommended (stable hostnames, works behind NAT)
Auth
SSH key-based auth (primary). Password auth as optional future addition.
Feature request: remote tab support
Each tab should be able to run either a local or remote agent session.
User flow
Host picker UI
Add host form fields
"Add & test" button does an immediate reachability check on save.
Data storage
Persist host list as
hosts.jsonin the Tauri app data directory.{ "hosts": [ { "id": "uuid", "nickname": "Home PC", "hostname": "192.168.1.42", "port": 22, "user": "arjen", "key_path": "~/.ssh/id_ed25519", "default_project": "/home/arjen/projects/myapp" } ] }Backend (Rust/Tauri)
Required Tauri commands:
list_hosts() → Vec<Host>add_host(host) → Hostremove_host(id) → ()check_reachability(hostname, port) → bool— TCP connect with 2s timeout (no root required)Reachability checks run in parallel when the modal opens.
SSH execution via
russhcrate (async, no system SSH dependency):Network
Auth
SSH key-based auth (primary). Password auth as optional future addition.