Commit 1b0ca78
feat: VSCode-style "Connect to remote host" SSH bootstrap (#107)
https://github.com/user-attachments/assets/0a2aa8eb-89a0-48fa-a73f-27041a816acb
## Summary
Implements the VSCode-style "Connect to remote host" flow for Harness's
existing multi-backend (Tier 1) system. The user picks an SSH host from
`~/.ssh/config` (or types a freeform `user@host`), Harness SSHes in,
installs `harness-server` if missing, starts it detached so it survives
disconnect, sets up an SSH local port forward, and hands the URL+token
to the existing `connections:add` flow.
This is the implementation of `plans/remote-main.md` §4 (and finishes §3
from the multi-backend Tier-1 work).
## Commits (recommended commit-by-commit review order)
1. `feat(ssh): parse ~/.ssh/config + add ssh-config listing IPC` —
`src/main/ssh-config.ts` + IPC handler + tests
2. `feat(ssh): node-ssh dependency + low-level bootstrap orchestrator` —
`src/main/ssh-bootstrap.ts` skeleton with progress events (no UI yet)
3. `feat(ssh): ssh-bootstrap slice + tunnel manager` — slice + tunnel
lifecycle code
4. `feat(ssh): BackendConnection.ssh field + boot-time reconnect` —
extends persistence + boot path
5. `feat(ssh): SSH tab in AddBackendModal` — UI piece
6. `feat(ssh): wire ssh:bootstrap into connections:add + progress log
UI` — final integration
## Manual smoke test
NOTE: This change required modifying the headless server, so testing
manually is kind of a long process. I had to manually build locally, SCP
the updated server over to the remote to replace the files already
installed from a previous version, and then connect remotely.
You might just have to trust me on this one that it works. We won't be
able to do a real full test until the new binary is in the GitHub
releases anyway
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 5db289f commit 1b0ca78
21 files changed
Lines changed: 2440 additions & 128 deletions
File tree
- src
- main
- renderer
- components
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
| 161 | + | |
161 | 162 | | |
162 | 163 | | |
163 | 164 | | |
164 | 165 | | |
165 | 166 | | |
166 | 167 | | |
167 | 168 | | |
| 169 | + | |
168 | 170 | | |
169 | 171 | | |
170 | 172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
70 | 71 | | |
71 | 72 | | |
72 | 73 | | |
| 74 | + | |
73 | 75 | | |
74 | 76 | | |
75 | 77 | | |
| |||
0 commit comments