Remote Sessions
Boo auto-detects remote terminal sessions and adapts the file explorer, status bar, and plugin context.
Supported Sessions
| Category | Tools |
|---|---|
| SSH-style | ssh, mosh |
| Containers | docker, podman, nerdctl, kubectl, oc, lxc |
| VMs | limactl, colima, vagrant |
| Toolboxes | distrobox, toolbox |
| Devices | adb shell |
Only interactive sessions trigger remote mode. Non-interactive commands (e.g. docker exec myapp cat /etc/hosts) don't switch the pane.
Detection
Two mechanisms work together:
- Title heuristics —
TerminalBridgechecks terminal title changes foruser@hostpatterns or known remote commands, combined with checking that the reported CWD doesn't exist locally - Process tree —
RemoteExplorerscans child processes forssh,mosh, and container/VM tools viaproc_listchildpids
When a remote session is detected, the sidebar switches to RemoteFileTreeView and runs listing commands appropriate for the session type.
Remote File Browsing
Commands are adapted per session type:
| Type | Pattern |
|---|---|
| SSH | ssh -n -o BatchMode=yes <host> <cmd> |
| Docker/Podman/nerdctl | <tool> exec <target> sh -c <cmd> |
| kubectl/oc/lxc/toolbox | <tool> <subcommand> <target> -- sh -c <cmd> |
| limactl | limactl shell <vm> sh -c <cmd> |
| adb | adb shell sh -c <cmd> |
SSH prefers ControlMaster sockets when available for connection reuse.
CWD Tracking
Since Ghostty's OSC 7 only reports the local shell's CWD, Boo uses title parsing (user@host:path), process-tree polling, and container CWD watchers to track the remote working directory.
