spawn/packages/cli/src
Ahmed Abushagur c77ca106d2
feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452)
OpenClaw runs a web dashboard on port 18791 of the remote VM. This
change SSH-tunnels that port to localhost and auto-opens the browser,
giving users a web UI with zero CLI knowledge needed.

- Add TunnelConfig to AgentConfig interface (agents.ts)
- Add startSshTunnel function with port-finding logic (ssh.ts)
- Capture gateway token in closure so the same token is used for both
  the remote config and the browser URL (agent-setup.ts)
- Wire tunnel into orchestration pipeline between preLaunch and
  interactiveSession (orchestrate.ts)
- Add getConnectionInfo to CloudOrchestrator interface and implement
  in all SSH-based clouds (DO, Hetzner, AWS, GCP)
- Local: opens browser directly at localhost:18791
- Sprite: gracefully skipped (no standard SSH)
- Add USER.md bootstrap to guide OpenClaw users to web dashboard

Closes #2449
Supersedes #2418

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: L <6723574+louisgv@users.noreply.github.com>
2026-03-10 14:25:43 -04:00
..
__tests__ test: remove duplicate getSpawnDir/getHistoryPath tests from history.test.ts (#2426) 2026-03-10 02:35:13 -07:00
aws feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
commands refactor: remove dead exports only used within their own files (#2431) 2026-03-10 08:51:15 -04:00
digitalocean feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
gcp feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
hetzner feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
local refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00
shared feat: ssh tunnel + browser auto-open for OpenClaw web dashboard (#2452) 2026-03-10 14:25:43 -04:00
sprite feat: integrate Sprite keep-alive tasks for all Sprite agents (#2428) 2026-03-10 02:24:18 -07:00
flags.ts fix: add --prune and --json to KNOWN_FLAGS for spawn status (#2263) 2026-03-06 19:31:07 -05:00
guidance-data.ts refactor: remove dead exports only used within their own files (#2431) 2026-03-10 08:51:15 -04:00
history.ts refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00
index.ts fix: align cloud defaults with manifest (DO size, Hetzner location) (#2387) 2026-03-09 18:23:22 +00:00
manifest.ts refactor: remove dead exports only used within their own files (#2431) 2026-03-10 08:51:15 -04:00
picker.ts fix: ESC/Ctrl-C in picker falls back to numbered list instead of cancelling (#2390) 2026-03-09 14:28:02 -07:00
security.ts Remove Daytona cloud provider from codebase (#2261) 2026-03-06 18:53:08 -05:00
unicode-detect.ts feat: Bun workspace monorepo — packages/cli + packages/shared (#1853) 2026-02-23 22:07:05 -08:00
update-check.ts refactor: centralize path resolution into shared/paths.ts (#2422) 2026-03-10 00:48:03 -07:00